import java.util.Scanner;

public class Test {

    //买瓜

    //输入 n、m
    // n 为瓜的数量，m 为需要的目标数量
    //循环输入瓜摊中瓜的质量
    //需要的质量 m * 2，瓜摊中每个瓜的质量也 * 2
    //每个瓜有三种状态：
    //不买：不劈
    //买半个：劈一刀
    //买整个：不劈

    public static int ans = 31;
    public static int n;
    public static int m ;
    public static int[] w;

    //pos 为当前位置，m 为累计质量，cnt 为劈瓜的次数
    private static void dfs(int pos, long M, int cnt) {
        if(M > m) return ;
        if(M == m) {
            ans = Math.min(ans,cnt);
            return ;
        }
        if(pos == n) return ;
        dfs(pos + 1,M,cnt);
        dfs(pos + 1,M + w[pos] / 2,cnt + 1);
        dfs(pos + 1,M + w[pos],cnt);
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        n = scan.nextInt();
        m = scan.nextInt() * 2;
        w = new int[n + 1];//每个瓜的质量
        for (int i = 0; i < n ; i++) {
            w[i] = scan.nextInt() * 2;
        }
        dfs(0,0,0);
        System.out.println(ans == 31 ? -1 : ans);
    }

}
